Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
100.00% |
75 / 75 |
n/a |
0 / 0 |
CRAP | n/a |
0 / 0 |
||
| 1 | <?php |
| 2 | |
| 3 | use Illuminate\Support\Facades\Route; |
| 4 | use App\Http\Controllers\AuthController; |
| 5 | use App\Http\Controllers\RegisterController; |
| 6 | use App\Http\Controllers\VolunteerRegistrationController; |
| 7 | use App\Http\Controllers\VolunteerController; |
| 8 | use App\Http\Controllers\FoodRescueController; |
| 9 | use App\Http\Controllers\MyDonationsController; |
| 10 | use App\Http\Controllers\Donor; |
| 11 | use App\Http\Controllers\Panti; |
| 12 | |
| 13 | // Home page |
| 14 | Route::view('/', 'home.index')->name('home'); |
| 15 | |
| 16 | Route::get('/login', [AuthController::class, 'showLogin'])->name('login'); |
| 17 | Route::post('/login', [AuthController::class, 'login'])->name('login.submit'); |
| 18 | Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); |
| 19 | |
| 20 | Route::get('/register', [RegisterController::class, 'showRegister'])->name('register'); |
| 21 | Route::post('/register/donor', [RegisterController::class, 'registerDonor'])->name('register.donor'); |
| 22 | Route::post('/register/recipient', [RegisterController::class, 'registerRecipient'])->name('register.recipient'); |
| 23 | Route::get('/volunteer', [VolunteerController::class, 'index'])->name('volunteer'); |
| 24 | Route::get('/wishlist', [\App\Http\Controllers\WishlistController::class, 'index'])->name('wishlist'); |
| 25 | Route::get('/wishlist/matching', [\App\Http\Controllers\DonationMatchingController::class, 'findMatches'])->name('wishlist.matching'); |
| 26 | Route::post('/wishlist/{id}/fulfill', [\App\Http\Controllers\DonationMatchingController::class, 'fulfillWishlist'])->name('wishlist.fulfill')->middleware('auth'); |
| 27 | Route::get('/wishlist/pledge/{id}', [\App\Http\Controllers\DonationMatchingController::class, 'showPledge'])->name('wishlist.pledge-detail')->middleware('auth'); |
| 28 | Route::post('/wishlist/pledge/{id}/confirm', [\App\Http\Controllers\DonationMatchingController::class, 'confirmPledge'])->name('wishlist.pledge.confirm')->middleware('auth'); |
| 29 | Route::get('/food-rescue', [FoodRescueController::class, 'index'])->name('food-rescue'); |
| 30 | Route::post('/food-rescue/{id}/claim', [FoodRescueController::class, 'claim'])->name('food-rescue.claim')->middleware('auth'); |
| 31 | Route::get('/food-rescue/{id}', [FoodRescueController::class, 'detail'])->name('food-rescue.detail'); |
| 32 | Route::get('/my-donations', [MyDonationsController::class, 'index'])->name('my-donations'); |
| 33 | // Register-panti page removed; redirect to the main register selection |
| 34 | Route::redirect('/register-panti', '/register'); |
| 35 | |
| 36 | // Volunteer registration routes |
| 37 | Route::get('/volunteer/register', [VolunteerRegistrationController::class, 'create'])->middleware('auth')->name('volunteer.register'); |
| 38 | Route::post('/volunteer/register', [VolunteerRegistrationController::class, 'store'])->middleware('auth')->name('volunteer.register.store'); |
| 39 | Route::get('/volunteer/status', [VolunteerRegistrationController::class, 'status'])->middleware('auth')->name('volunteer.status'); |
| 40 | Route::get('/volunteer/dashboard', [VolunteerController::class, 'dashboard'])->middleware('auth')->name('volunteer.dashboard'); |
| 41 | |
| 42 | use App\Http\Controllers\Admin\AdminController; |
| 43 | use App\Http\Controllers\Admin\UserController; |
| 44 | use App\Http\Controllers\Admin\DonasiController; |
| 45 | use App\Http\Controllers\Admin\PantiProfileController; |
| 46 | use App\Http\Controllers\Admin\RelawanProfileController; |
| 47 | use App\Http\Controllers\Panti\ProfileController; |
| 48 | use App\Http\Controllers\Panti\WishlistController; |
| 49 | use App\Http\Controllers\Panti\DonasiMasukController; |
| 50 | |
| 51 | Route::prefix('admin')->name('admin.')->middleware(['auth', \App\Http\Middleware\EnsureAdmin::class])->group(function () { |
| 52 | // Redirect /admin to dashboard |
| 53 | Route::get('/', function () { return redirect()->route('admin.dashboard'); })->name('index'); |
| 54 | |
| 55 | Route::get('/dashboard', [AdminController::class, 'index'])->name('dashboard'); |
| 56 | |
| 57 | // Static admin pages (views) |
| 58 | // Manajemen Donasi (CRUD) |
| 59 | Route::get('/manajemen-donasi', [DonasiController::class, 'index'])->name('donations.index'); |
| 60 | Route::get('/manajemen-donasi/create', [DonasiController::class, 'create'])->name('donations.create'); |
| 61 | Route::post('/manajemen-donasi', [DonasiController::class, 'store'])->name('donations.store'); |
| 62 | Route::get('/manajemen-donasi/{id}/edit', [DonasiController::class, 'edit'])->name('donations.edit'); |
| 63 | Route::put('/manajemen-donasi/{id}', [DonasiController::class, 'update'])->name('donations.update'); |
| 64 | Route::delete('/manajemen-donasi/{id}', [DonasiController::class, 'destroy'])->name('donations.destroy'); |
| 65 | // Food Rescue (CRUD) |
| 66 | Route::get('/food-rescue', [FoodRescueController::class, 'adminIndex'])->name('food-rescue.index'); |
| 67 | Route::get('/food-rescue/create', [FoodRescueController::class, 'create'])->name('food-rescue.create'); |
| 68 | Route::post('/food-rescue', [FoodRescueController::class, 'store'])->name('food-rescue.store'); |
| 69 | Route::get('/food-rescue/{id}/edit', [FoodRescueController::class, 'edit'])->name('food-rescue.edit'); |
| 70 | Route::put('/food-rescue/{id}', [FoodRescueController::class, 'update'])->name('food-rescue.update'); |
| 71 | Route::delete('/food-rescue/{id}', [FoodRescueController::class, 'destroy'])->name('food-rescue.destroy'); |
| 72 | // Manajemen Penerima (Panti Profiles) |
| 73 | Route::get('/manajemen-penerima', [PantiProfileController::class, 'index'])->name('recipients.index'); |
| 74 | Route::get('/manajemen-penerima/create', [PantiProfileController::class, 'create'])->name('recipients.create'); |
| 75 | Route::post('/manajemen-penerima', [PantiProfileController::class, 'store'])->name('recipients.store'); |
| 76 | Route::get('/manajemen-penerima/{id}/edit', [PantiProfileController::class, 'edit'])->name('recipients.edit'); |
| 77 | Route::put('/manajemen-penerima/{id}', [PantiProfileController::class, 'update'])->name('recipients.update'); |
| 78 | Route::delete('/manajemen-penerima/{id}', [PantiProfileController::class, 'destroy'])->name('recipients.destroy'); |
| 79 | // Manajemen Relawan (CRUD) |
| 80 | Route::get('/manajemen-relawan', [RelawanProfileController::class, 'index'])->name('volunteers.index'); |
| 81 | Route::get('/manajemen-relawan/create', [RelawanProfileController::class, 'create'])->name('volunteers.create'); |
| 82 | Route::post('/manajemen-relawan', [RelawanProfileController::class, 'store'])->name('volunteers.store'); |
| 83 | Route::get('/manajemen-relawan/{id}/edit', [RelawanProfileController::class, 'edit'])->name('volunteers.edit'); |
| 84 | Route::put('/manajemen-relawan/{id}', [RelawanProfileController::class, 'update'])->name('volunteers.update'); |
| 85 | Route::delete('/manajemen-relawan/{id}', [RelawanProfileController::class, 'destroy'])->name('volunteers.destroy'); |
| 86 | Route::view('/pengaturan', 'admin.pengaturan-admin.index')->name('settings.index'); |
| 87 | Route::view('/laporan', 'admin.laporan-admin.index')->name('reports.index'); |
| 88 | |
| 89 | // Manajemen pengguna |
| 90 | Route::get('/manajemen-pengguna', [UserController::class, 'index'])->name('users.index'); |
| 91 | Route::post('/manajemen-pengguna', [UserController::class, 'store'])->name('users.store'); |
| 92 | Route::get('/manajemen-pengguna/{id}/edit', [UserController::class, 'edit'])->name('users.edit'); |
| 93 | Route::put('/manajemen-pengguna/{id}', [UserController::class, 'update'])->name('users.update'); |
| 94 | Route::delete('/manajemen-pengguna/{id}', [UserController::class, 'destroy'])->name('users.destroy'); |
| 95 | }); |
| 96 | |
| 97 | // Panti (recipient) pages |
| 98 | Route::prefix('panti')->name('panti.')->middleware(['auth'])->group(function () { |
| 99 | Route::get('/dashboard', function () { return view('panti.dashboard.index'); })->name('dashboard'); |
| 100 | Route::get('/wishlist', [WishlistController::class, 'index'])->name('wishlist'); |
| 101 | Route::post('/wishlist', [WishlistController::class, 'store'])->name('wishlist.store'); |
| 102 | Route::put('/wishlist/{id}', [WishlistController::class, 'update'])->name('wishlist.update'); |
| 103 | Route::delete('/wishlist/{id}', [WishlistController::class, 'destroy'])->name('wishlist.destroy'); |
| 104 | Route::get('/donasi-masuk', [DonasiMasukController::class, 'index'])->name('donasi-masuk'); |
| 105 | Route::post('/donasi-masuk/{id}/confirm', [DonasiMasukController::class, 'confirmReceipt'])->name('donasi-masuk.confirm'); |
| 106 | Route::get('/donasi-masuk/{id}/detail', [DonasiMasukController::class, 'viewDetail'])->name('donasi-masuk.detail'); |
| 107 | Route::get('/food-rescue', function () { return view('panti.food-rescue.index'); })->name('food-rescue'); |
| 108 | Route::get('/laporan', function () { return view('panti.laporan.index'); })->name('laporan'); |
| 109 | Route::get('/profil', [ProfileController::class, 'index'])->name('profil'); |
| 110 | Route::post('/profil', [ProfileController::class, 'update'])->name('profil.update'); |
| 111 | Route::get('/pengaturan', function () { return view('panti.pengaturan.index'); })->name('pengaturan'); |
| 112 | }); |
| 113 | |
| 114 | // Donor profile page |
| 115 | Route::get('/donor-profile', [Donor\ProfileController::class, 'index'])->name('donor-profile')->middleware('auth'); |
| 116 | Route::post('/donor-profile', [Donor\ProfileController::class, 'update'])->name('donor-profile.update')->middleware('auth'); |
| 117 | Route::post('/donor-profile/password', [Donor\ProfileController::class, 'updatePassword'])->name('donor-profile.update-password')->middleware('auth'); |
| 118 |